/**
 * @class button - switch to fullscreen mode and back
 *
 * @param  elRTE  rte   объект-редактор
 * @param  String name  название кнопки
 *
 * @author:    Dmitry Levashov (dio) dio@std42.ru
 * @copyright: Studio 42, http://www.std42.ru
 **/
(function ($) {
    elRTE.prototype.ui.prototype.buttons.fullscreen = function (rte, name) {
        var self = this;
        this.constructor.prototype.constructor.call(this, rte, name);
        this.active = true;
        this.editor = rte.editor;
        this.wz = rte.workzone;
        this.height = 0;
        this.delta = 0;
        this._class = 'el-fullscreen';

        setTimeout(function () {
            self.height = self.wz.height();
            self.delta = self.editor.outerHeight() - self.height;
        }, 50);


        /**
         * Update editor height on window resize in fullscreen view
         *
         **/
        function resize() {
            self.wz.height($(window).height() - self.delta);
            self.rte.updateHeight();
        }

        this.command = function () {
            var w = $(window),
                e = this.editor,
                p = e.parents().filter(function (i, n) {
                    return  !/^(html|body)$/i.test(n.nodeName) && $(n).css('position') == 'relative';
                }),
                wz = this.wz,
                c = this._class,
                f = e.hasClass(c),
                rte = this.rte,
                s = this.rte.selection,
//                m = $.browser.mozilla,
                b, h;

            function save() {
//                if (m) {
//                    b = s.getBookmark();
//                }
            }

            function restore() {
//                if (m) {
//                    self.wz.children().toggle();
//                    self.rte.source.focus();
//                    self.wz.children().toggle();
//                    s.moveToBookmark(b);
//                }
            }

            save();
            p.css('position', f ? 'relative' : 'static');

            if (f) {
                e.removeClass(c);
                wz.height(this.height);
                w.unbind('resize', resize);
                this.domElem.removeClass('active');
            } else {
                e.addClass(c).removeAttr('style');
                wz.height(w.height() - this.delta).css('width', '100%');
                w.bind('resize', resize);
                this.domElem.addClass('active');
            }
            rte.updateHeight();
            rte.resizable(f);
            restore();

        }

        this.update = function () {
            this.domElem.removeClass('disabled');
        }
    }
})(jQuery);
